/*mysleep.c*/
#include<signal.h> // 引入信号处理头文件
#include<stdio.h>  // 引入标准输入输出头文件
#include<unistd.h> // 引入POSIX操作系统API的头文件

// 定义闹钟信号的处理函数
void alarm_handler(int alarm) {
    printf("sleep is over\n"); // 打印信息表示睡眠结束
}

// 定义一个模拟sleep的函数
int mysleep(int seconds) {
    signal(SIGALRM, alarm_handler); // 设置SIGALRM信号的处理函数为alarm_handler
    alarm(seconds); // 设置闹钟信号在seconds秒后发送
    
    // pause函数使进程挂起，直到捕获到一个信号
    pause(); 
    
    // 注意：原代码中这里缺少了返回语句，但根据上下文，我们可以理解为该函数不需要返回值
    // 或者可以添加一个返回0表示成功，但在这个例子中，由于pause函数后不会立即返回，
    // 所以这个返回语句实际上不会被执行到。为了代码的完整性，这里可以添加但不必要。
    return 0; // 可选，表示函数执行成功（但实际上不会被执行到）
}

int main() {
    printf("before pause\n"); // 打印信息表示在pause之前
    mysleep(3); // 调用mysleep函数，参数为3秒
    printf("after pause\n"); // 打印信息表示在pause之后，即闹钟信号触发并处理完后
    return 0; // 程序正常结束
    // 注意：原代码中return语句后的分号是中文分号，应改为英文分号
}

